In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (guest OS) and software applications (processes). Typically, a virtual machine manager (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the remote client that uses the VM.
A VM may include one or more applications that generate data (e.g., images, video, etc.) to be displayed at a physical display device of the host machine. When generating this data, an application takes into consideration settings of the display device such as resolution, orientation, display position, color depth, sub-pixel order, etc. However, a VM may be woken up after the settings of the physical display device were changed by a user, resulting in a mismatch between the display settings of the VM and the current settings of the physical display device.
Further, a VM may run in a virtual desktop environment, in which a centralized server is partitioned into multiple VMs that host the virtual desktops, thereby providing a desktop for each user. The centralized hosting provides the manageability of sever-based computing, while the dedicated environment provides the flexibility and compatibility with applications that a desktop enables. In general, VMs therefore enable remote access to a host or server computer by a remote client computer, which mimics or reconstructs the events taking place on the host computer. However, currently there is no mechanism that would provide an automatic correspondence between the display settings of the VM and those of the remote client.